#ifndef __OLED_H
#define __OLED_H

#define OLED_SCL_RCC		RCC_AHB1Periph_GPIOF	//SCL引脚时钟
#define OLED_SCL_GPIOx		GPIOF					//SCL引脚的GPIO
#define OLED_SCL_Pin		GPIO_Pin_1				//SCL引脚的Pin号
#define OLED_SDA_RCC		RCC_AHB1Periph_GPIOF	//SDA引脚时钟
#define OLED_SDA_GPIOx		GPIOF					//SDA引脚的GPIO
#define OLED_SDA_Pin		GPIO_Pin_0				//SDA引脚的Pin号
#define OLED_Address		0x78

/*====================函数显示====================*/
#include <math.h>

#define X0			64		//坐标原点所在列
#define Y0			4		//坐标原点所在页(默认所在页的b7)
#define unitX		0.1		//X轴单位长度
#define unitY		0.1		//Y轴单位长度
#define f(x)		(sin(x))//函数
/*================================================*/

typedef enum
{
	OLED_Left=0,
	OLED_Right,
}OLED_Direction;//OLED滚动方向枚举

void OLED_WriteCommand(uint8_t Command);//OLED写命令
void OLED_WriteData(uint8_t Data);//OLED写数据
void OLED_SetCursor(uint8_t Page,uint8_t Row);//OLED光标定位
void OLED_Light(uint8_t Page,uint8_t Row,uint8_t Data);//OLED显示一列8bit
void OLED_Clean(void);//OLED清屏
void OLED_Init(void);//OLED初始化
void OLED_HightLight(uint8_t Flag);//OLED全局明亮
void OLED_Turn(uint8_t Flag);//OLED反白
void OLED_ScrollClose(void);//OLED关闭滚动
void OLED_Scroll(OLED_Direction Direction,uint8_t StartPage,uint8_t EndPage,uint8_t Speed);//OLED滚动
void OLED_ScrollLen(OLED_Direction Direction,uint8_t StartPage,uint8_t EndPage,uint8_t Length);//OLED滚动固定像素
void OLED_ShowChar(uint8_t Line,uint8_t Column,char Char);//OLED显示字符
void OLED_ShowString(uint8_t Line,uint8_t Column,char *String);//OLED显示字符串
void OLED_ShowLinesString(uint8_t Line,uint8_t Column,char *String);//OLED显示可换行字符串
void OLED_ShowNum(uint8_t Line,uint8_t Column,uint32_t Number,uint8_t Length);//OLED显示无符号整数
void OLED_ShowVarLenNum(uint8_t Line,uint8_t Column,uint32_t Number);//OLED显示变长度无符号整数
void OLED_ShowSignedNum(uint8_t Line,uint8_t Column,int32_t Number,uint8_t Length);//OLED显示有符号整数
void OLED_ShowSignedVarLenNum(uint8_t Line,uint8_t Column,int32_t Number);//OLED显示变长度有符号整数
void OLED_ShowHexNum(uint8_t Line,uint8_t Column,uint32_t Number,uint8_t Length);//OLED显示十六进制整数
void OLED_ShowOctNum(uint8_t Line,uint8_t Column,uint32_t Number,uint8_t Length);//OLED显示八进制整数
void OLED_ShowBinNum(uint8_t Line,uint8_t Column,uint32_t Number,uint8_t Length);//OLED显示二进制整数
void OLED_ShowDecimal(uint8_t Line,uint8_t Column,float Number,uint8_t IntLen,uint8_t DecLen);//OLED显示小数
void OLED_ShowVarIntLenDecimal(uint8_t Line,uint8_t Column,float Number,uint8_t DecLen);//OLED显示变整数长度小数
void OLED_ShowVarLenDecimal(uint8_t Line,uint8_t Column,float Number);//OLED显示变长度小数
void OLED_ShowSignedDecimal(uint8_t Line,uint8_t Column,float Number,uint8_t IntLen,uint8_t DecLen);//OLED显示有符号小数
void OLED_ShowSignedVarIntLenDecimal(uint8_t Line,uint8_t Column,float Number,uint8_t DecLen);//OLED显示变整数长度有符号小数
void OLED_ShowSignedVarLenDecimal(uint8_t Line,uint8_t Column,float Number);//OLED显示变长度有符号小数
void OLED_ShowChinese(uint8_t Line,uint8_t Column,char *Chinese);//OLED显示中文(未完待续)
void OLED_ShowFunction(void);//OLED显示函数图像
void OLED_ShowPicture(void);//OLED显示图片

#endif
